package projetolp2.GraphicInterface;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Configuracoes extends MealPoints implements ActionListener{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private JPanel panelMenu = new JPanel(new BorderLayout());
	private JPanel panel1 = new JPanel(new GridLayout(0, 1));
	private JPanel panel2= new JPanel(new GridLayout(0, 1));
	private JPanel panel3= new JPanel(new GridLayout(0, 1));
	private JPanel panel4= new JPanel(new GridLayout(0, 1));
	private JPanel panel5= new JPanel(new GridLayout(0, 1));
	private JPanel panel6= new JPanel(new GridLayout(0, 1));
	private final JLabel label = new JLabel("Meal points");
	private JButton TEMA = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getTema());
	private JButton SELECTARQOPINIOES = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getSelecionarArquivo());
	private JButton SELECTARQEST = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getarqEst());
	private JButton VOLTAR = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getVoltar());
	private JButton IDIOMA = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getIdioma());
	
	private JButton CONFIRMATEMA = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getConfirmar());
	private JButton CONFIRMAIDIOMA = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getConfirmar());
	private JButton CANCELATEMA = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getCancelar());
	private JButton CANCELAIDIOMA = new JButton(NomeBotoes.values()[idioma(IDIOMAPROGRAMA )].getCancelar());
	private JComboBox TEMAS = new JComboBox();
	private JFrame janelaMudaTema;
	private JFrame janelaMudaIdioma;
	JPanel panelMudaTema = new JPanel(new GridLayout(0, 1));
	JPanel panelMudaIdioma = new JPanel(new GridLayout(0, 1));
	
	private JComboBox IDIOMAS = new JComboBox();
	private JPanel panelFinal = new JPanel(new GridLayout(2, 0));
	
	public Configuracoes(){
		TEMAS.addItem("MealPoints 1");
		TEMAS.addItem("MealPoints 2");
		TEMAS.addItem("MealPoints 3");
		TEMAS.addItem("MP black");
		TEMAS.addItem("MP orange");
		TEMAS.addItem("Tecnolog");
		
		IDIOMAS.addItem("Potugues");
		IDIOMAS.addItem("Ingles");
		IDIOMAS.addItem("espanhol");
	}
	private void ajudaDeBotoes(){
		TEMA.setToolTipText("Escolha o tema para o programa");
		SELECTARQOPINIOES.setToolTipText("Selecione o arquivo contendo as opini�es e os usuarios");
		SELECTARQEST.setToolTipText("Selecione o arquivo contendo os estabelecimentos");
		IDIOMA.setToolTipText("Mudar o idioma do programa, necessario reiniciar programa para alteracoes entrarem em vigor");
		VOLTAR.setToolTipText("Voltar a janela anterior");
	}
	
	@SuppressWarnings("deprecation")
	public void actionPerformed(ActionEvent e){
		JFileChooser fc = new JFileChooser();
		if(e.getSource() == VOLTAR){
			removerAdicionar(configuracoes,menu);
		}
		else if(e.getSource() == SELECTARQEST){
			int res = fc.showOpenDialog(null);
            
            if(res == JFileChooser.APPROVE_OPTION){
                File arquivo = fc.getSelectedFile();
                String[] nomeArquivo = arquivo.getName().split("");
                Arrays.toString(nomeArquivo);
                String tipoArq = nomeArquivo[nomeArquivo.length-3]+nomeArquivo[nomeArquivo.length-2]+nomeArquivo[nomeArquivo.length-1];
                if (tipoArq.equals("txt"))
                	JOptionPane.showMessageDialog(null, "Voce escolheu o arquivo: " + arquivo.getName());
                else{
                	JOptionPane.showMessageDialog(null, "Arquivo invalido");
                }
                SISTEMA.mudaArqEst(arquivo.getAbsolutePath());
            	System.out.println(arquivo.getAbsolutePath());
            }
            else
                JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum arquivo."); 

		}
		else if(e.getSource() == SELECTARQOPINIOES){
			int res = fc.showOpenDialog(null);
            
            if(res == JFileChooser.APPROVE_OPTION){
                File arquivo = fc.getSelectedFile();
                String[] nomeArquivo = arquivo.getName().split("");
                Arrays.toString(nomeArquivo);
                String tipoArq = nomeArquivo[nomeArquivo.length-3]+nomeArquivo[nomeArquivo.length-2]+nomeArquivo[nomeArquivo.length-1];
                if (tipoArq.equals("txt"))
                	JOptionPane.showMessageDialog(null, "Voce escolheu o arquivo: " + arquivo.getName());
                else{
                	JOptionPane.showMessageDialog(null, "Arquivo invalido");
                }
                SISTEMA.mudaArqOpi(arquivo.getAbsolutePath());
            	System.out.println(arquivo.getAbsolutePath());
            }
            else
                JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum arquivo."); 
        
			//removerAdicionar(configuracoes,selecionarARQ);
		}
		else if(e.getSource() == CONFIRMATEMA){
			janela.enable();
			janelaMudaTema.dispose();
			try{
				if (TEMAS.getSelectedItem().equals("MealPoints 1")){
					colocaTema("1");
					arqConfiguracoes.escreverArquivoTema("1");
				}
				else if (TEMAS.getSelectedItem().equals("MealPoints 2")){
					colocaTema("2");
					arqConfiguracoes.escreverArquivoTema("2");
				}
				else if (TEMAS.getSelectedItem().equals("MealPoints 3")){
					colocaTema("3");
					arqConfiguracoes.escreverArquivoTema("3");
				}
				else if (TEMAS.getSelectedItem().equals("Tecnolog")){
					colocaTema("4");
					arqConfiguracoes.escreverArquivoTema("4");
				}
				else if (TEMAS.getSelectedItem().equals("MP black")){
					colocaTema("5");
					arqConfiguracoes.escreverArquivoTema("5");
				}
				else if (TEMAS.getSelectedItem().equals("MP orange")){
					colocaTema("6");
					arqConfiguracoes.escreverArquivoTema("6");
				}
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			janela.repaint();
		}
		else if(e.getSource() == CONFIRMAIDIOMA){
			janela.enable();
			janelaMudaIdioma.dispose();
			try {
				arqConfiguracoes.escreverArquivoIdioma(((String) IDIOMAS.getSelectedItem()).toLowerCase());
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			janela.repaint();
		}
		else if(e.getSource() == CANCELATEMA){
			janela.enable();
			janelaMudaTema.dispose();
		}
		else if(e.getSource() == CANCELAIDIOMA){
			janela.enable();
			janelaMudaIdioma.dispose();
		}
		else if(e.getSource() == TEMA){
			panelMudaTema.removeAll();
			JLabel selecioneTema = new JLabel("Selecione o tema");
			TEMAS.setBackground(Color.WHITE);
	        panelMudaTema.add(selecioneTema);
			panelMudaTema.add(TEMAS);
			janela.disable();
			sectTheme();
		}
		else if(e.getSource() == IDIOMA){
			panelMudaIdioma.removeAll();
			JLabel selecioneIdioma= new JLabel("Selecione o idioma");
	        IDIOMAS.setBackground(Color.WHITE);
			panelMudaIdioma.add(selecioneIdioma);
			panelMudaIdioma.add(IDIOMAS);
			janela.disable();
			sectIdioma();
			//sectLanguage();
		}
	}
	private void createComponents() {
		ajudaDeBotoes();
		
		VOLTAR.setMnemonic(KeyEvent.VK_I);
        VOLTAR.addActionListener(this);
        label.setLabelFor(VOLTAR);
        
		TEMA.setMnemonic(KeyEvent.VK_I);
		TEMA.addActionListener(this);
        label.setLabelFor(TEMA);
        
		SELECTARQOPINIOES.setMnemonic(KeyEvent.VK_I);
		SELECTARQOPINIOES.addActionListener(this);
        label.setLabelFor(SELECTARQOPINIOES);
		
        SELECTARQEST.setMnemonic(KeyEvent.VK_I);
        SELECTARQEST.addActionListener(this);
        label.setLabelFor(SELECTARQEST);
        
        IDIOMA.setMnemonic(KeyEvent.VK_I);
        IDIOMA.addActionListener(this);
        label.setLabelFor(IDIOMA);
        

		panel1.add(TEMA);
		panel2.add(SELECTARQOPINIOES);
		panel3.add(IDIOMA);
		panel4.add(VOLTAR);
		panel5.add(SELECTARQEST);
		
        panel1.setBorder(BorderFactory.createEmptyBorder(
        		5, //top
                10, //left
                5, //bottom
                10) //right
                );
        panel2.setBorder(BorderFactory.createEmptyBorder(
        		5, //top
                10, //left
                5, //bottom
                10) //right
                );
        panel3.setBorder(BorderFactory.createEmptyBorder(
        		5, //top
                10, //left
                5, //bottom
                10) //right
                );
        panel4.setBorder(BorderFactory.createEmptyBorder(
        		5, //top
                6, //left
                5, //bottom
                6) //right
                );
        panel5.setBorder(BorderFactory.createEmptyBorder(
        		5, //top
                5, //left
                5, //bottom
                5) //right
                );
		panelFinal.add(panel1);
        panelFinal.add(panel2);
        panelFinal.add(panel5);
        panelFinal.add(panel3);
        panelFinal.add(panel6);
        panelFinal.add(panel4);
        panelMenu.add(panelFinal, BorderLayout.NORTH);
    }
	public Component panel(){
		createComponents();
		panelMenu.setVisible(true);
		
		
		return panelMenu;
	}
	@SuppressWarnings("deprecation")
	private void sectTheme(){
		
		CONFIRMATEMA.setMnemonic(KeyEvent.VK_I);
		CONFIRMATEMA.addActionListener(this);
        label.setLabelFor(CONFIRMATEMA);
        
        CANCELATEMA.setMnemonic(KeyEvent.VK_I);
        CANCELATEMA.addActionListener(this);
        label.setLabelFor(CANCELATEMA);
        
		panelMudaTema.add(CONFIRMATEMA);
		panelMudaTema.add(CANCELATEMA);
		panelMudaTema.setBorder(BorderFactory.createEmptyBorder(
                40, //top
                30, //left
                40, //bottom
                30) //right
                );
		
		panelMudaTema.setBackground(Color.DARK_GRAY);
		
		JFrame.setDefaultLookAndFeelDecorated(true);
		janelaMudaTema = new JFrame();
		janelaMudaTema.setSize(400,180);//Tamanho da janela
		janelaMudaTema.setResizable(false);//pode redimensionar a janela
		janelaMudaTema.setLocation(30,30);//Local onde a janela aparecera
		janelaMudaTema.setIconImage(null);
		janelaMudaTema.setTitle("Mudar o tema");
		janelaMudaTema.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janela.disable();
		janelaMudaTema.add(panelMudaTema);
		janelaMudaTema.setVisible(true);
		
		janelaMudaTema.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		janelaMudaTema.addWindowListener(new java.awt.event.WindowAdapter() {   
			public void windowClosing(java.awt.event.WindowEvent e) { 
				if (e.getID() == WindowEvent.WINDOW_CLOSING){   
					janelaMudaTema.dispose();
					janela.enable(true);
				}
			}
		});
	}
	private void sectIdioma(){
		
		CONFIRMAIDIOMA.setMnemonic(KeyEvent.VK_I);
		CONFIRMAIDIOMA.addActionListener(this);
        label.setLabelFor(CONFIRMAIDIOMA);
        
        CANCELAIDIOMA.setMnemonic(KeyEvent.VK_I);
        CANCELAIDIOMA.addActionListener(this);
        label.setLabelFor(CANCELAIDIOMA);
        
		panelMudaIdioma.add(CONFIRMAIDIOMA);
		panelMudaIdioma.add(CANCELAIDIOMA);
		panelMudaIdioma.setBorder(BorderFactory.createEmptyBorder(
                40, //top
                30, //left
                40, //bottom
                30) //right
                );
		
		panelMudaIdioma.setBackground(Color.DARK_GRAY);
		
		JFrame.setDefaultLookAndFeelDecorated(true);
		janelaMudaIdioma = new JFrame();
		janelaMudaIdioma.setSize(400,180);//Tamanho da janela
		janelaMudaIdioma.setResizable(false);//pode redimensionar a janela
		janelaMudaIdioma.setLocation(30,30);//Local onde a janela aparecera
		janelaMudaIdioma.setIconImage(null);
		janelaMudaIdioma.setTitle("Mudar o idioma");
		janelaMudaIdioma.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janela.setEnabled(false);
		janelaMudaIdioma.add(panelMudaIdioma);
		janelaMudaIdioma.setVisible(true);
		
		janelaMudaIdioma.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		janelaMudaIdioma.addWindowListener(new java.awt.event.WindowAdapter() {   
			@SuppressWarnings("deprecation")
			public void windowClosing(java.awt.event.WindowEvent e) { 
				if (e.getID() == WindowEvent.WINDOW_CLOSING){   
					janelaMudaIdioma.dispose();
					janela.enable(true);
				}
			}
		});
	}
}
